var nozzle_size_p = 0.4													;Nozzle size of primary print head
var nozzle_size_s = 0.4													;Nozzle size of secondary print head
var accuracy = 0.1														;Accuracy for each pattern

var x_position = 200													;Start position in X axis
var y_position= 400														;Start position in Y axis
var y_move = 10															;Size of the pattern on Y axis
var x_move = 30															;Size of the pattern on X axis
var z_p= var.nozzle_size_p / 2											;Start position in Z axis for primary print head
var z_s= var.nozzle_size_s / 2											;Start position in Z axis for secondary print head
var e_p = var.nozzle_size_p * var.nozzle_size_p * 0.300					;Amount of extrude in relation to length for primary print head
var e_s = var.nozzle_size_s * var.nozzle_size_s * 0.300					;Amount of extrude in relation to length for secondary print head
var loops = 40;
var y_accuracy=var.accuracy*var.loops/4 								;Start position of the accuracy in Y axis


M107
G28																		;home all axes
G29 S1
G1 Z5 F5000																;lift nozzle
M291 S3 R"Verify filament is loaded, bed is heated" P"Press OK to continue, or CANCEL to abort"
echo "Verify nozzle size and temperature","T0", var.nozzle_size_p,"T1", var.nozzle_size_s, "accuracy",var.accuracy,
G4 S1
M104 S200 T0															;set temperature primary
M104 S200 T1															;set temperature secondary
M109 S200 T0															;set temperature primary and wait for it to be reached
M109 S200 T1															;set temperature secondary and wait for it to be reached
M106 P0 S0
M106 P1 S0
G4 S3

T0
G1 E10
M83																		;use relative distances for extrusion
G1 Z3
G90																		;use absolute coordinates
G1 X{var.x_position} Y{var.y_position+100} F10000
G1 Z{var.z_p} F1000
G1 X{var.x_position} Y{var.y_position} E{var.e_p*100*2} F1000			;Start T0 straight line for cleaning the nozzle
G91																		;use relative positioning for the XYZ axes
G1 X{-var.x_move} E{var.e_p*var.x_move} F2000	
G1 Y{-var.y_move} E{var.e_p*var.y_move} F2000

while true																;Start T0 pattern
	if iterations < var.loops/2-1
		G1 X{var.x_move} Y{-var.y_move/2} E{var.e_p*var.x_move} F2000
		G1 X{-var.x_move} Y{-var.y_move/2} E{var.e_p*var.x_move} F2000
		G1 Y{-var.y_move/2} E{var.e_p*var.y_move/2} F2000
	
	elif iterations = var.loops/2-1										;Close T0 pattern
		G1 X{var.x_move} E{var.e_p*var.x_move} F2000 					;T0 pattern end
		G1 E{-var.nozzle_size_p}
		G90																;use absolute coordinates
		G28 Y														;home all axes
	elif iterations = var.loops/2										;Start T1 straight line for cleaning the nozzle
		T1
		G1 E10
		G1 Z3 F3000
		G1 X{var.x_position + var.nozzle_size_s+var.nozzle_size_p} Y{var.y_position+100} F10000
		G1 Z{var.z_s} F1000
		G1 X{var.x_position + var.nozzle_size_s+var.nozzle_size_p} Y{var.y_position + var.y_accuracy} E{var.e_s*100*2} F4000
		G1 X{var.x_position + var.nozzle_size_s+var.nozzle_size_p + var.x_move } Y{var.y_position+var.y_accuracy} E{var.e_s*var.x_move} F2000
		G1 X{var.x_position + var.nozzle_size_s+var.nozzle_size_p + var.x_move} Y{var.y_position+var.y_accuracy-var.y_move} E{var.e_s*var.y_move} F2000
		G91																;use relative positioning for the XYZ axes
	
	elif iterations > var.loops/2 & iterations < var.loops*3/4			;T1 pattern from offset of -2 to offset 0
		G1 Y{-var.accuracy} E{var.e_s*var.accuracy} F500
		G1 X{-var.x_move} Y{-var.y_move/2} E{var.e_s*var.x_move} F2000
		G1 X{var.x_move} Y{-var.y_move/2} E{var.e_s*var.x_move} F2000
		G1 Y{-var.y_move/2} E{var.e_s*var.y_move/2} F1000
		
	elif iterations = var.loops*3/4										;T1 pattern of offset 0	(U=U)
		G1 Y{-var.accuracy} E{var.e_s*var.accuracy} F500
		G1 X{-var.x_move} Y{-var.y_move/2} E{var.e_s*var.x_move} F2000
		G1 X{var.x_move} Y{-var.y_move/2} E{var.e_s*var.x_move} F2000
		G1 X{var.x_move} Y{var.y_move/2} E{var.e_s*var.x_move} F2000
		G1 X{-var.x_move} Y{var.y_move/2} E{var.e_s*var.x_move} F2000
		G1 Y{-var.y_move*1.5} E{var.e_s*var.y_move*1.5} F1000
	
	elif iterations > var.loops*3/4 & iterations < var.loops			;T1 pattern from offset of 0 to offset 2	
		G1 Y{-var.accuracy} E{var.e_s*var.accuracy} F500
		G1 X{-var.x_move} Y{-var.y_move/2} E{var.e_s*var.x_move} F2000
		G1 X{var.x_move} Y{-var.y_move/2} E{var.e_s*var.x_move} F2000
		G1 Y{-var.y_move/2} E{var.e_s*var.y_move/2} F1000
	
	elif iterations = var.loops											;T1 pattern of offset +2 (U=U+2)
		G1 Y{-var.accuracy} E{var.e_s*var.accuracy} F500
		G1 X{-var.x_move} E{var.e_s*var.x_move} F2000
		G1 E{-var.nozzle_size_s}
		break
	
G90 																	;use absolute coordinates
G28																		;home all
M291 S3 R"Go to cofig_probe_U," P"BACK = -U, FRONT = +U"